package gemini.pollux.ui.client.mvp.gin;

import gemini.pollux.ui.client.mvp.PlaceRequestManager;
import gemini.pollux.ui.client.page.RootPresenter;
import gemini.pollux.ui.client.page.content.marketingplan.level.LevelPresenter;
import gemini.pollux.ui.client.page.content.marketingplan.level.edit.LevelEditPresenter;
import gemini.pollux.ui.client.page.content.marketingplan.level.list.LevelListPresenter;
import gemini.pollux.ui.client.page.content.product.product.ProductPresenter;
import gemini.pollux.ui.client.page.content.product.product.edit.ProductEditPresenter;
import gemini.pollux.ui.client.page.content.product.product.list.ProductListPresenter;
import gemini.pollux.ui.client.page.content.product.producttype.ProductTypePresenter;
import gemini.pollux.ui.client.page.content.product.producttype.edit.ProductTypeEditPresenter;
import gemini.pollux.ui.client.page.content.product.producttype.list.ProductTypeListPresenter;
import ch.elca.gwt.mvp.client.EventBus;
import ch.elca.gwt.mvp.client.place.PlaceManager;

import com.google.gwt.core.client.GWT;
import com.google.gwt.inject.client.GinModules;
import com.google.gwt.inject.client.Ginjector;

@GinModules(PolluxModule.class)
public interface PolluxGinjector extends Ginjector {

    public static final PolluxGinjector INSTANCE = GWT.create(PolluxGinjector.class);

    PlaceManager getPlaceManager();
    EventBus getEventBus();
    PlaceRequestManager getPlaceRequestManager();

    RootPresenter getRootPresenter();
    
    // Main content
    LevelPresenter getLevelPresenter();
    LevelListPresenter getLevelListPresenter();
	LevelEditPresenter getLevelEditPresenter();
	
	// Main content
    ProductTypePresenter getProductTypePresenter();
    ProductTypeListPresenter getProductTypeListPresenter();
    ProductTypeEditPresenter getProductTypeEditPresenter();
    
    // Main content
    ProductPresenter getProductPresenter();
    ProductListPresenter getProductListPresenter();
    ProductEditPresenter getProductEditPresenter();
}
